package com.qd.admin.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.cdqidi.util.page.PageUtil;
import com.qd.common.sys.domain.entity.log.*;
import com.qd.system.service.log.*;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;

/**
 * 日志信息
 *
 * @author sjk
 */
@RestController
@Slf4j
@Validated
@RequiredArgsConstructor
public class LogController {

    private final LoginLogService loginLogService;
    private final OperatorLogService operatorLogService;
    private final DataLogService dataLogService;
    private final SendLogService sendLogService;
    private final ReceiveLogService receiveLogService;

    /**
     * 登录日志列表
     *
     * @return 列表
     */
    @GetMapping(value = "/sys/sysLog/loginLogPage")
    public IPage<LoginLogDTO> loginLogPage(LoginLogDTO dto) {
        return loginLogService.page(PageUtil.buildPage(dto), dto);
    }

    /**
     * 登录日志详情
     *
     * @return 列表
     */
    @GetMapping(value = "/sys/sysLog/loginLogById")
    public LoginLogDTO loginLogById(@Valid @NotBlank(message = "日志ID不能为空") String logId) {
        return loginLogService.getByIdDto(logId);
    }

    /**
     * 操作日志列表
     *
     * @return 列表
     */
    @GetMapping(value = "/sys/sysLog/operatorLogPage")
    public IPage<OperatorLogDTO> operatorLogPage(OperatorLogDTO dto) {
        return operatorLogService.page(PageUtil.buildPage(dto), dto);
    }

    /**
     * 操作日志详情
     *
     * @return 列表
     */
    @GetMapping(value = "/sys/sysLog/operatorLogById")
    public OperatorLogDTO operatorLogById(@Valid @NotBlank(message = "日志ID不能为空") String logId) {
        return operatorLogService.getByIdDto(logId);
    }


    /**
     * 数据日志列表
     *
     * @param dto 查询参数以及页数和每页显示条数
     * @return 列表信息
     */
    @GetMapping(value = "/sys/sysLog/dataLogPage")
    public IPage<DataLogDTO> page(DataLogDTO dto) {
        return dataLogService.page(PageUtil.buildPage(dto), dto);
    }

    /**
     * 数据日志详情
     *
     * @param id 主键
     * @return 记录
     */
    @GetMapping(value = "/sys/sysLog/dataLogById")
    public DataLogDTO getById(@Validated @NotBlank(message = "ID不能为空") String id) {
        return dataLogService.getByIdDto(id);
    }

    /**
     * 发送日志列表
     *
     * @param dto 查询参数以及页数和每页显示条数
     * @return 列表信息
     */
    @GetMapping(value = "/sys/sysLog/sendLogPage")
    public IPage<SendLogDTO> sendLogPage(SendLogDTO dto) {
        return sendLogService.page(PageUtil.buildPage(dto), dto);
    }

    /**
     * 发送日志详情
     *
     * @param id 主键
     * @return 记录
     */
    @GetMapping(value = "/sys/sysLog/sendLogById")
    public SendLogDTO sendLogById(@Validated @NotBlank(message = "ID不能为空") String id) {
        return sendLogService.getByIdDto(id);
    }


    /**
     * 接收日志列表
     *
     * @param dto 查询参数以及页数和每页显示条数
     * @return 列表信息
     */
    @GetMapping(value = "/sys/sysLog/receiveLogPage")
    public IPage<ReceiveLogDTO> receiveLogPage(ReceiveLogDTO dto) {
        return receiveLogService.page(PageUtil.buildPage(dto), dto);
    }

    /**
     * 接收日志详情
     *
     * @param id 主键
     * @return 记录
     */
    @GetMapping(value = "/sys/sysLog/receiveLogById")
    public ReceiveLogDTO receiveLogById(@Validated @NotBlank(message = "ID不能为空") String id) {
        return receiveLogService.getByIdDto(id);
    }
}